package com.hlf.modules.sys.controller;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.serializer.SimplePropertyPreFilter;
import com.hlf.modules.sys.entity.Area;
import com.hlf.modules.sys.service.AreaService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.List;

/**
 * 行政区划表现层控制类
 * 
 * @author shuliangxing
 *
 * @date 2017年3月29日 下午3:25:16
 */
@Controller
@RequestMapping("area")
public class AreaController {

	@Autowired
	AreaService service;

	/**
	 * 区域简短信息输出
	 */
	private SimplePropertyPreFilter areaFilter = new SimplePropertyPreFilter(Area.class, "areaCode", "name");

	/**
	 * 根据区域编码查询
	 * 
	 * @param areaCode
	 * @return
	 * @author shuliangxing
	 * @date 2017年3月29日 下午3:25:02
	 */
	@ResponseBody
	@RequestMapping(value = "{areaCode}", method = RequestMethod.GET)
	public Area getArea(@PathVariable("areaCode") Long areaCode) {
		return service.selectByAreaCode(areaCode);
	}

	/**
	 * 根据区域编码查询-简短信息
	 * 
	 * @param areaCode
	 * @return
	 * @author shuliangxing
	 * @date 2017年3月29日 下午3:25:02
	 */
	@ResponseBody
	@RequestMapping(value = "short/{areaCode}", method = RequestMethod.GET)
	public String getShortArea(@PathVariable("areaCode") Long areaCode) {
		return JSON.toJSONString(service.selectByAreaCode(areaCode), areaFilter);
	}

	/**
	 * 根据父区域编码查询下级区域集合
	 * 
	 * @param pcode
	 * @return
	 * @author shuliangxing
	 * @date 2017年3月29日 下午3:26:55
	 */
	@ResponseBody
	@RequestMapping(value = "next_areas/{pcode}", method = RequestMethod.GET)
	public List<Area> getList(@PathVariable("pcode") Long pcode) {
		return service.selectByPCode(pcode);
	}

	/**
	 * 根据父区域编码查询下级区域集合-简短信息
	 * 
	 * @param pcode
	 * @return
	 * @author shuliangxing
	 * @date 2017年3月29日 下午3:26:55
	 */
	@ResponseBody
	@RequestMapping(value = "next_areas/short/{pcode}", method = RequestMethod.GET)
	public String getShortList(@PathVariable("pcode") Long pcode) {
		return JSON.toJSONString(service.selectByPCode(pcode), areaFilter);
	}

}
